<?php
namespace Tlf\User;
class AdminDashboardAddon extends \Lia\Addon {
public string $fqn = 'taeluf:user.admin_dashboard';
//public string $name = 'initialization_addon';
public function __construct(\Tlf\User\Package $package){
parent::__construct($package);
$this->lia->hook(\Lia\Hooks::REQUEST_STARTED, [$this, 'add_admin_routes']);
$this->lia->hook(\Tlf\User\Hooks::DASHBOARD_WILL_DISPLAY, [$this, 'add_admin_dashboards']);
}
public function add_admin_routes(\Lia\Obj\Request $request, \Lia\Obj\Response $response){
$target_url = $this->package->url("/admin/");
$partial_url = substr($request->url(),0,strlen($target_url));
$is_user_admin_route = $partial_url == $target_url;
if (!$is_user_admin_route)return;
$is_admin_user = $this->package->get_user()->has_role('admin') === true;
if (!$is_admin_user){
return;
}
error_log("Adding admin routes for user lib. User has role 'admin'. This check does not respect configured access settings.");
$this->lia->addon('lia:server.router')
->addDirectoryRoutes($this->package, __DIR__.'/public/',$this->package->base_url,['.php']);
}
public function add_admin_dashboards(){
if ($this->package->get_user()->has_role('admin') !== true){
return;
}
error_log("Adding admin dashboard views. User has role 'admin'. This check does not respect configured access settings.");
$this->lia->addon('lia:server.view')
->addDir(__DIR__.'/view/', $this->package);
$this->package->add_user_dashboard('User Login Configuration', 'user:admin-dashboard/configure-login');
$this->package->add_user_dashboard('Liaison Site Details', 'user:admin-dashboard/liaison-site-details');
}
}